The disclosure relates generally to providing recommendations, and more specifically, to computing recommendations based on an entity-relationship graph.
In general, a recommendation system produces a ranked list of recommendations, such as movie, product, and/or book recommendations, by modeling a user's past behavior in association with the behavior of similar users and/or items of interest and by applying collaborative, content-based, and hybrid filtering algorithms. Often such systems assume an application domain having a limited number of entity types (e.g., Person, Product) and simple entity interactions (e.g., Person <purchased> Product, Person <rated> Product) that enable the ranked list of recommendations to be generated by these filtering algorithms. Thus, when more complex application domains that include a large number of entities and complex interactions are utilized by the system, the above filtering algorithms fail to adequately represent the interactions between the entities, and in turn yield unsatisfactory recommendations.
For example, a complex application domain may include a plurality of entity types (e.g., User, Task, Platform, System, Component, Log, Event, etc.) that are involved in a plurality of complex interactions (e.g., User <logins> System, System <uses> Component, Component <interfacesTo> Component, etc.) where the plurality of entity types and complex interactions represent collaborative, semantic, and schematic metadata. Collaborative metadata represents complex interactions between user-related entity types, such as, Person, Project, Organization, etc. (e.g., Person <collaboratesWith> Person, Person <worksOn> Project). Semantic metadata represents complex interactions between the content of entity types such as, Table, Column, etc. (e.g., Column <relatedTo> Column, Table <relevantTo> Topic). Schematic metadata represents complex interactions between structural data-related entity types, such as, DataSet, Table, Column, etc. (e.g., DataSet <consistsOf> Table, Table <consistsOf> Column, etc.). To make meaningful recommendations in the complex application domain example, the filtering algorithms must collectively consider each different kind of metadata. Yet the above filtering algorithms fail to consider each different kind of metadata and thus inadequately represent the plurality of interactions—which in turn yields unsatisfactory recommendations.